package com.cy_02;


import java.io.File;
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        System.out.println("请输入文件夹的路径:");
        String path =new Scanner(System.in).nextLine();

        File dir =new File(path);
        long sum =sizeOf(dir);
        System.out.println("文件夹是： "+path+",总大小是："+sum);

    }

    private static long sizeOf(File dir) {
        File [] a =dir.listFiles();
        long sum = 0;
        for(int i = 0;i<a.length;i++){
            if(a[i].isFile()){
                sum= sum+a[i].length();
            }else if(a[i].isDirectory()){
                sum=sum+sizeOf(a[i]);
            }
        }
        return sum;
    }
}


/**
 * 递归
 * 		现象：方法里调用方法本身
 * 		好处：减少了代码
 * 		坏处：费内存
 * 		package cn.tedu.api;
 *
 * 		import java.io.File;
 * 		import java.util.Scanner;
 *
 * 		//测试 递归
 * 		public class Test2 {
 * 			public static void main(String[] args) {
 * 				//1,自定义目录路径
 * 				System.out.println("请输入文件夹 的路径：");
 * 				String path = new Scanner(System.in).nextLine();
 * 				//2,封装成File
 * 				File dir = new File(path);
 * 				//3,调用方法，求总大小
 * 				long sum = sizeOf(dir);
 * 				System.out.println("文件夹是： "+path+",总大小是："+sum);
 *                        }
 * 			//定义方法,求总大小
 * 			public static long sizeOf(File dir) {
 * 		//		1,列出文件夹里的所有资源 listFiles()
 * 				File[] a = dir.listFiles();
 * 				long sum = 0 ;//定义变量,记录总和
 * 		//		2,遍历获取每个资源a[i]
 * 				for (int i = 0; i < a.length; i++) {
 * 		//		3,判断，如果资源是文件，求大小length()
 * 					if(a[i].isFile()) {
 * 						sum = sum + a[i].length() ;
 *                    }else if(a[i].isDirectory()) {
 * 		//		4,判断，如果资源是文件夹
 * 		//				//重复的执行1 2 3 --递归
 * 						sum = sum + sizeOf(a[i]);//--递归
 *                    }
 *                }
 * 				return sum ;//返回计算的结果sum
 *            }
 ** 		}
 */
